凝集型クラスタリング(agglomerative type clustering)
Overview
凝集型クラスタリングは、個々のデータポイントをそれぞれ個別のクラスタとして開始し、最も類似した2つのクラスタを併合します。指定しただけのクラスタが残るまで似たクラスタを併合し続けます。
Theory
「最も類似したクラスタ」を決定する連結(linkage)度には様々なものがあります。
ward: クラスタ内の分散の増分が最小になるように2つのクラスタを併合します(デフォルト)
average: クラスタ間のすべてのポイント間の距離の平均値が最小の2クラスタを併合します
complete: 2つのクラスタの点間の距離の最大値が最小となるものを併合します
wardはほとんどのデータセットでうまくいきます。データポイントの数が極端に違う場合は、averageやcompleteのほうがうまくいくかもしれません。
https://gyazo.com/0081cf64618eba86e05c0f3951476c98
最初は各ポイントがそれぞれクラスタになっています。ステップごとに最も近い2つのクラスタが併合されます。この過程を指定したクラスタ数になるまで繰り返します。
Coding
合成データセットに凝集型クラスタリングを適用する
code: Python
import matplotlib.pyplot as plt
import mglearn
from sklearn.datasets import make_blobs
from sklearn.cluster import AgglomerativeClustering
X, y = make_blobs(random_state=1)
agg = AgglomerativeClustering(n_clusters=3)
# AgglomerativeClusteringは新しいデータに対して予測をすることができないためpredictメソッドがない
assignment = agg.fit_predict(X)
mglearn.discrete_scatter(X:, 0, X:, 1, assignment) plt.xlabel('Feature 0')
plt.ylabel('Feature 1')
plt.show()
https://gyazo.com/6dc978d38b7022b2551352d9a716766b